package com.zzw.service;

import com.zzw.bean.Product;
import com.zzw.bean.ProductES;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ProductESService {
    
    /**
     * 创建商品索引
     */
    boolean createProductIndex() throws IOException;
    
    /**
     * 删除商品索引
     */
    boolean deleteProductIndex() throws IOException;

    /**
     * 根据ID判断商品是否存在
     */
    boolean isExists(Integer id) throws IOException;
    
    /**
     * 保存商品文档
     */
    boolean saveProduct(ProductES productES) throws IOException;
    
    /**
     * 批量保存商品文档
     */
    boolean saveProductBatch(List<ProductES> productESList) throws IOException;
    
    /**
     * 从MySQL同步所有商品数据到ES
     */
    boolean syncProductData() throws IOException;

    /**
     * 更新商品文档
     */
    boolean updateProduct(ProductES productES) throws IOException;

    /**
     * 删除商品文档
     */
    boolean deleteProduct(Integer id) throws IOException;

    /**
     * 通过关键词搜索商品
     */
    List<ProductES> searchByKeyword(String keyword, int pageNum, int pageSize) throws IOException;

    /**
     * 通过多条件搜索商品
     */
    Map<String, Object> searchProduct(String keyword, Integer categoryId, BigDecimal minPrice, 
                               BigDecimal maxPrice, String sort, int pageNum, int pageSize) throws IOException;
    
    /**
     * 获取相关商品推荐
     */
    List<ProductES> getRelatedProducts(Integer productId, int size) throws IOException;
    
    /**
     * 获取热门商品推荐
     */
    List<ProductES> getHotProducts(int size) throws IOException;
} 